home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / DIAG / NEED48.ARJ / NEED.PRI < prev    next >
Text File  |  1992-01-09  |  62KB  |  2,113 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.                       NEED, AVOID AND SNIFF 4.8
  8.  
  9.  
  10. Last updated by Roedy Green on 1992 January 09
  11.  
  12.  
  13. PURPOSE
  14.  
  15. NEED.COM, AVOID.COM, and SNIFF.COM are a trio of utilities for
  16. ensuring the environment is friendly before continuing.  They will
  17. test the waters for and report back on such things as:
  18.  
  19.   1. Is DESQview running?
  20.  
  21.   2. Is there sufficient conventional, extended and expanded RAM?
  22.  
  23.   3. Is there sufficient free disk space?
  24.  
  25.   4. Are the necessary DOS utilities loaded like QEMM, SHARE, and
  26.      BTRIEVE?
  27.  
  28.   5. Do you have a sufficiently powerful CPU? and NPX (numeric
  29.      co-processor)?
  30.  
  31.   6. In this the right day of the month, or day of the week to
  32.      run this job?
  33.  
  34. You tell NEED what you want, then it does all the tests then returns a
  35. simple GO/NO-GO ERRORLEVEL you can test.  If it is 0 all is ok.  If it
  36. is 1, one or more of the requirements failed.
  37.  
  38. Since MASM source code is provided to registered owners, (see the end
  39. of this document for information on registering) and since it was
  40. written very modularly, it is very easy to cannibalize routines from
  41. it to include in your own code so long as the code is not used for
  42. military purposes.
  43.  
  44. NEED, AVOID and SNIFF are copyrighted but may be copied freely and
  45. used for any purpose but military.  See the end of this document on
  46. how to register if you want the latest version or the MASM source
  47. code.
  48.  
  49.  
  50. TYPICAL USE
  51.  
  52. NEED and AVOID are a complementary pair of utilities.  NEED is for
  53. telling what you WANT, and AVOID is for telling what you DON'T WANT.
  54. SNIFF is just for finding out what's out there, without any
  55. preconceived notion of how it should be.
  56.  
  57. NEED  DESQview  DOS3.3-  80386!  C:3MB
  58. If Errorlevel 1 GoTo Trouble
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74. DESQview  means you must be running under DESQview.
  75. DOS3.3-   means you need DOS 3.3 or lower.
  76. 80386!    means you must have an 386 processor, no more no less.
  77. C:3MB     means you must have at least 3 MB of free disk space on
  78.                drive C:.
  79.  
  80.  
  81. AVOID   DESQview   DOS3.3-  80387!
  82. If Errorlevel 1 GoTo Trouble
  83.  
  84. DESQview  means you must be NOT running under DESQview.
  85. DOS3.3-   means you cannot run on DOS 3.3 or lower.
  86. 80387!    means you program will not work if there is an 80387 numeric
  87.                co-processor present.
  88.  
  89.  
  90. SNIFF  DESQview  DOS  CPU  C:
  91. Rem Sniff does not use the errorlevel.
  92.  
  93. DESQview    means is DESQview is running?
  94. DOS         means what version of DOS is running?
  95. CPU         means what kind of CPU do you have?
  96. C:          means how much space is left on drive C:?
  97.  
  98. SUFFIXES
  99.  
  100. Just skim this section on first reading.  It will make a lot more
  101. sense later once you have seen some more examples.
  102.  
  103. Some parameters may have a trailing + ! or -.
  104.  
  105. +  means "and up" as in "DOS3.3+"
  106.  
  107. -  means "and lower" as in "DOS3.3-"
  108.  
  109. !  means "this and only this" as in "DOS3.3!"
  110.  
  111. If you don't specify a suffix, both NEED and AVOID presume !.
  112. However, for capacity-type words such as /EXP:400K, NEED presumes +.
  113.  
  114. /YEAR:1991, /MONTH:12  and /DAY:31 have a default suffix of !.  It
  115. never hurts to override the default.  Using explicit suffixes will
  116. make your BAT files easier to understand.  The default suffixes are
  117. shown with the documentation on each possible parameter.
  118.  
  119. In other words:
  120.  
  121. NEED DOS3.3
  122.      means the same as:
  123.  
  124. NEED DOS3.3!
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.      means you want JUST DOS 3.3 and nothing else will do.
  140.  
  141. where:
  142.  
  143. NEED DOS3.3+
  144.      means you want DOS 3.3 or higher.
  145.  
  146. NEED DOS3.3-
  147.      means you want DOS 3.3 or earlier.
  148.  
  149. Similarly:
  150.  
  151. AVOID DOS4.01
  152.      means the same as:
  153.  
  154. AVOID DOS4.01!
  155.      means you want to avoid DOS 4.01,
  156.      but all other versions are acceptable.
  157.  
  158. AVOID DOS4.01+
  159.      means you want to avoid DOS 4.01 and all later versions.
  160.  
  161. AVOID DOS4.01-
  162.      mean you want to avoid DOS 4.01 and all earlier versions.
  163.  
  164. The three suffixes + - and ! make sense for version-type parameters.
  165.  
  166. None of the suffixes make sense for a parameter like QEMM which is
  167. either present or not.  However, suffixes do apply to CPU and NPX-type
  168. parameters like 80386DX and 80387 which can be ordered by power.  e.g.
  169. NEED 80286+ means you want an 80286 or more powerful CPU.
  170.  
  171. For capacity-type parameters like C:40MB, only + makes sense, which is
  172. the default anyway.  However, in AVOID, only C:40MB- makes sense.
  173. This all sounds much more confusing than it really is.  Just
  174. experiment, you will catch on pretty quickly.
  175.  
  176. Is all that on suffixes just too confusing?  Rejoice.  SNIFF ignores
  177. all your suffixes.  No matter what you do with them it will accept
  178. them.
  179.  
  180.  
  181. GENERAL SYNTAX RULES
  182.  
  183. On first reading, just skim this section.
  184.  
  185. K or KB  means "measured in 1024 byte units".  For example, to insist
  186. on having at least 400 kilobytes (40,960 bytes) of free RAM type:
  187.  
  188.      NEED  RAM:400KB
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205. M or MB means "measured in megabyte (1024x1024) units".  For example,
  206. to insist on 20 megabytes (20,971,520 bytes) of free space on drive
  207. C:, type:
  208.  
  209.      NEED  C:20MB+
  210.  
  211. The use of forward slash / to introduce a switch is optional.  You can
  212. say:
  213.  
  214.      NEED  /DESQview
  215.  
  216. or
  217.  
  218.      NEED  DESQview
  219.  
  220. If there are no separating slashes, then parameters must be separated
  221. by blank space.  No spaces are allowed within a single parameter
  222. however.
  223.  
  224. The command line is case insensitive.  You can put letters in any
  225. combination of upper and lower case you like.
  226.  
  227. Numbers may contain optional commas.  The commas are ignored.  Numbers
  228. may also contain decimal points.
  229.  
  230. In Norway, home of the world's most enthusiastic beta testers, the
  231. roles of comma and decimal point are reversed.  In general the
  232. "thousands separator" and "decimal separator" are taken from the DOS
  233. Country.Sys information, so comma and decimal are different dependent
  234. on your country.  Either the comma or point may be used in version
  235. type parameters such as /DOS4,01 or /DOS4.01.
  236.  
  237. Parameters have a short form and sometimes various alias and long
  238. forms.  Intermediate length names are not allowed.  If I did allow
  239. intermediate forms, then later I might later implement a new parameter
  240. that could break existing BAT files by rendering existing use of a an
  241. intermediate length parameter ambiguous.
  242.  
  243. You can put as many parameters as will fit on the command line.  There
  244. is only one output -- the ERRORLEVEL which is either 0 for GO, 1 for
  245. NO GO, or 4 for syntax error.  The program will display messages for
  246. each test passed or failed.  They can be suppressed with >NUL:.  If
  247. you want to have individual control for recovery purposes, test only
  248. one parameter at a time.  The utility is around 8K, so it will not
  249. take long to load it multiple times, especially if you have caching.
  250.  
  251. Any syntax error beckons a help display with a brief summary of the
  252. syntax.
  253.  
  254. There are three kinds of commands:
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.   1. Plain words that test for the existence of something.  e.g.
  272.      386MAX   8086   PCDOS   EXP
  273.  
  274.   2. Capacity words with a colon followed by a number:  e.g.
  275.      RAM:40K   C:2MB   EXP:400,000
  276.  
  277.   3. Version words followed directly by a number without a colon:
  278.      e.g.   DOS4.01   PCDOS5.0
  279.  
  280. Note that some words come in more than one flavour.  For example,
  281. /EXP tests for the existence of a expanded memory manager, but
  282. /EXP:400,000 checks that a certain amount for free expanded RAM is
  283. available.   /PCDOS checks that any version of IBM PC DOS is running,
  284. but /PCDOS3.1 tests that version 3.1 is running.
  285.  
  286. SNIFF is much more laid back than NEED or AVOID.  You may optionally
  287. leave out the version or the capacity so:
  288. RAM   RAM:  RAM:4K   C   C:   C:100K   DOS  DOS4.1+
  289. are all equally acceptable to SNIFF.
  290.  
  291.  
  292. NOTE
  293.  
  294. The suffix shown after each word following is the DEFAULT SUFFIX you
  295. will get if you don't specify a suffix.
  296.  
  297.  
  298. PARAMETERS
  299.  
  300. 386!                You require an 80386-DX cpu.
  301.  
  302. 386MAX!             You must be running with the 386MAX memory manager
  303.                     active.
  304.  
  305. 486!                You require an 80486-DX cpu.
  306.  
  307. 4DOS!               You must be running under 4DOS.  If you are
  308.                     running under COMMAND.COM under 4DOS this will
  309.                     still be considered as running under 4DOS.
  310.  
  311. 80186!              You require an 80186 cpu.
  312.  
  313. 80188!              You require an 80188 cpu.
  314.  
  315. 80286!              You require an 80286 cpu.
  316.  
  317. 80287!              You need an 80287 numeric coprocessor.
  318.  
  319. 80386!              You require an 80386-DX cpu.
  320.  
  321. 80386DX!            You require an 80386-DX cpu.
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337. 80386SX!            You require an 80386-SX cpu.
  338.  
  339. 80387!              You require an 80387 numeric coprocessor.
  340.  
  341. 80486!              You require an 80486-DX cpu.
  342.  
  343. 80486DX!            You require an 80486-DX cpu.
  344.  
  345. 8086!               You require an 8086 cpu.
  346.  
  347. 8087!               You require an 8087 numeric coprocessor.
  348.  
  349. 8088!               You require an 8088 cpu.
  350.  
  351. A20                 You require that A20 addressing line be active for
  352.                     high memory access.
  353.  
  354. ANSI                You require that ANSI.SYS be loaded in your
  355.                     CONFIG.SYS.  Some other drivers may partially
  356.                     simulate ANSI.SYS, and will appear to NEED/AVOID
  357.                     as if they are ANSI.SYS.  If you use redirection
  358.                     e.g.
  359.                          SNIFF ANSI > TEMP.TXT
  360.                     under DOS versions prior to 4.0, then the ANSI
  361.                     test will not work.  Under old versions of DOS,
  362.                     Windows in real mode also interferes with the ANSI
  363.                     test.
  364.  
  365. APPEND              You require the DOS APPEND command to be active.
  366.  
  367. ASSIGN              You require the DOS ASSIGN command to be active.
  368.  
  369. AT                  You require a AT style BIOS.  See /BIOS.
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403. BIOS+               NEED BIOS is a synonym for NEED EXOTIC+.  AVOID
  404.                     BIOS is a synonym for AVOID EXOTIC-.  SNIFF BIOS
  405.                     means "What kind of BIOS do I have?"  Exotic, XT,
  406.                     AT or PS2?  The test depends on the machine id
  407.                     byte at location F000:FFFE in the ROM BIOS.  If
  408.                     your machine is a non-standard "exotic" clone,
  409.                     SNIFF cannot tell which kind of BIOS you have.
  410.                     SNIFF will report the non-standard machine-id
  411.                     code.  Please report it to me and details about
  412.                     your machine, so I can teach SNIFF to recognize
  413.                     it.  BIOSes are ranked so that you can say:
  414.                          NEED  XT+
  415.                     meaning EXOTICs will not do, but XT, AT or PS2 is
  416.                     ok.  When NEED says you have an AT, it simply
  417.                     means you have an AT BIOS.  This has nothing
  418.                     whatsoever to do with your CPU.  It might be a
  419.                     286, SX, 386 or 486.  When it says you have an XT
  420.                     BIOS, you might even have even have an Intel
  421.                     Inboard 386.  If it says you have a PS2, there is
  422.                     a good chance you don't have a PS/2 microchannel
  423.                     machine.  You simply have a BIOS of the style used
  424.                     by PS/2 computers.
  425.  
  426. BTRIEVE             You require the Novell BTRIEVE Btree indexed file
  427.                     manager to be loaded.
  428.  
  429. C:3MB+              There must be at least 3 MB of FREE disk space on
  430.                     drive C:.  You may use drives A: through Z:.  Note
  431.                     SNIFF C: will tell you the amount of UNUSED, FREE,
  432.                     UNALLOCATED, AVAILABLE space on your drive.  IT
  433.                     DOES NOT REPORT THE *TOTAL* AMOUNT OF SPACE ON
  434.                     YOUR DRIVE.  Only unallocated disk space is of any
  435.                     interest or use to programs.
  436.  
  437. CPU+                This does not make much sense in NEED or AVOID
  438.                     though you may use it.  In SNIFF it means "What
  439.                     kind of CPU do I have?"
  440.  
  441. D:1+                There must be at least one free byte of disk space
  442.                     on drive D:.  This could be used to detect the
  443.                     presence of drive D:
  444.  
  445. DAY:31!             means you can only run this program on the 31st of
  446.                     the month.  /DAY:28+ means you can only run it on
  447.                     the 28th, 29th, 30th or 31st of the month.  Beware
  448.                     of using /DAY:31 since in many months it never
  449.                     happens.
  450.  
  451. DESQ                You must be running under DESQview.
  452.  
  453. DESQ2.31!           You must be running under DESQview version 2.31.
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  
  467.  
  468.  
  469. DESQview            You must be running under DESQview.
  470.  
  471. DESQview2.31!       You must be running under DESQview version 2.31.
  472.  
  473. DOS10.0!            You must be running in the OS/2 compatibility box
  474.                     which is considered as DOS 10.0+
  475.  
  476. DOS2.1!             You must be running under DOS 2.10.
  477.  
  478. DOS3!               You must be running under DOS 3.00.
  479.  
  480. DOS3.00!            You must be running under DOS 3.00.
  481.  
  482. DOS3.31!            You must be running under DOS 3.31
  483.  
  484. DOS5.0!             You may specify any version number, not just those
  485.                     listed here.  NEED/AVOID can tell DOS4.00 and
  486.                     DOS4.01 apart even though DOS4.01 lies about its
  487.                     true identity.  In theory, this is impossible.
  488.                     How does NEED do it?  Register and peek at the
  489.                     source code.
  490.  
  491. DPMI                You must be running with a DOS Protected Memory
  492.                     Interface manager (DPMI).  There is no matching
  493.                     DPMI:40K test for determining how much DPMI RAM is
  494.                     available since running such a test would require
  495.                     entering protected mode.  The only time this test
  496.                     will ever come up true is if you are running under
  497.                     Windows 3.0 in enhanced mode.
  498.  
  499. DRDOS               You must be running under Digital Research DRDOS,
  500.                     any version.  Both DRDOS and DRMDOS are treated as
  501.                     equivalent.
  502.  
  503. DRDOS5.0!           You must be running under DRDOS 5.0.
  504.                     You can specify any version.  Internally DRDOS
  505.                     pretends to be Compaq DOS 3.31.
  506.  
  507. DV                  You must be running under DESQview.
  508.  
  509. DV2.31              You must be running under DESQview version 2.31.
  510.  
  511. DX!                 You require an 80386-DX cpu.
  512.  
  513. EMM                 You must have an expanded memory manager active.
  514.                     EMM is an alias for EXP.
  515.  
  516. EMM:100,000+        You must have 100,000 free bytes of EMM RAM
  517.                     EMM is an alias for EXP.  See /EXP for more
  518.                     details.
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  
  533.  
  534.  
  535. EMS                 You must have an expanded memory manager active.
  536.                     EMS is an alias for EXP.
  537.  
  538. EMS:1MB+            You must have 1 megabyte of free expanded RAM.
  539.                     EMS is an alias for EXP.
  540.  
  541. ENV:300+            You must have 300 or more FREE bytes in the SET
  542.                     environment.  ENV is an alias for ENVIRONMENT.
  543.  
  544. ENVIRONMENT:1K+     You must have 1024 (1K) or more FREE bytes in the
  545.                     SET environment.  DOS tacks the current program
  546.                     name onto the end of the SET environment.  SET
  547.                     considers the area used by the program name as
  548.                     free.  So you should ask for a little extra to
  549.                     give DOS room.  Please note SNIFF /ENVIRONMENT
  550.                     will NOT report the total size of your environment
  551.                     -- just the REMAINING FREE SPACE.  This is what is
  552.                     of interest to programs wanting to fill it up with
  553.                     SET commands.
  554.  
  555. EXOTIC              AVOID EXOTIC means stay away from non-standard
  556.                     BIOSes.  See /BIOS.
  557.  
  558. EXP                 You must have an expanded memory manager active.
  559.                     EXP is an alias for EXPANDED.
  560.  
  561. EXP:400K+           You must have 400 or more free bytes of expanded
  562.                     RAM controlled by a LIM EMS EMM memory manager.
  563.                     EXP is an alias for EXPANDED.
  564.  
  565. EXPANDED            You must have an expanded memory manager active.
  566.  
  567. EXPANDED:70K+       You must have 70 K of free expanded RAM.
  568.                     Note SNIFF /EXPANDED will tell you the amount of
  569.                     UNUSED, FREE, UNALLOCATED, AVAILABLE expanded RAM.
  570.                     IT DOES NOT REPORT THE *TOTAL* AMOUNT OF EXPANDED
  571.                     RAM.  Only unallocated RAM is of any interest or
  572.                     use to programs.
  573.  
  574. EXT:3MB+            You must have 3 or more megabytes of free extended
  575.                     RAM.  EXT is an ALIAS for EXTENDED.
  576.  
  577. EXTENDED:100K+      You must have 100K or more free extended RAM.  The
  578.                     RAM can be any type -- XMS, VDISK or INT 15.  If
  579.                     you want to measure only the modern XMS RAM, use
  580.                     /XMS.  Note SNIFF /EXTENDED will tell you the
  581.                     amount of UNUSED, FREE, UNALLOCATED, AVAILABLE
  582.                     extended RAM.  IT DOES NOT REPORT THE *TOTAL*
  583.                     AMOUNT OF EXTENDED RAM.  Only unallocated RAM is
  584.                     of any interest or use to programs.  Often all
  585.                     your extended RAM has been converted to EXPANDED
  586.                     so that explains why there is none left.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601. FRIDAY!             It must be Friday.  Sunday is considered the first
  602.                     day of the week if you use + and - suffixes.
  603.  
  604. HELP                Displays a short syntax summary.  You need this
  605.                     manual though to get all the possible commands.
  606.                     PLEASE DO NOT PASS THIS PROGRAM ON WITHOUT THIS
  607.                     MANUAL.  It is too complex for on-line help only.
  608.                     If you vandalize this package and pass it on
  609.                     without the manual, I might even be tempted to do
  610.                     something illegal and unpleasant to you.
  611.  
  612. KEYB                You must have KEYB installed.  It may or may not
  613.                     be configured to a non-American layout.
  614.  
  615. LAN                 You must be actively attached to a LAN.  It works
  616.                     by testing to see if any of drives C: to Z: are
  617.                     remote.  CD-ROM drives are detected and specially
  618.                     handled so they do not count as LAN drives.
  619.  
  620. LIM                 You must have an expanded memory manager active.
  621.                     LIM is an alias for EXP.
  622.  
  623. LIM:0.7MB+          You must have 0.7 MB of free expanded RAM.
  624.                     LIM is an alias for EXP.
  625.  
  626. MONDAY!             It must be Monday.  Sunday is considered the first
  627.                     day of the week if you use + and - suffixes.
  628.  
  629. MONTH:12!           This means you may only run this program in
  630.                     December.  /MONTH:2- means you could only run it
  631.                     in January or February.  /MONTH:10+ means you can
  632.                     only run it in October to December.
  633.  
  634. MOUSE!              You must have a mouse operational.
  635.  
  636. MSDOS               You must currently be running some version of
  637.                     Microsoft's MS DOS.  See PCDOS for warnings on
  638.                     difficulty telling PC and MS DOS apart.  When it
  639.                     does not matter, just use the /DOS4.01 command.
  640.  
  641. MSDOS3.3!           You must currently be running Microsoft's version
  642.                     of MS DOS version 3.3.
  643.  
  644. NCACHE              You require Norton NCACHE disk cacher to be loaded
  645.                     -- possibly as a device driver in config.sys or as
  646.                     a TSR in autoexec.bat.
  647.  
  648. NETBIOS             You must have a NETBIOS type LAN active.
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667. NPX                 You must have some sort of numeric processor
  668.                     installed.  There are individual commands for the
  669.                     various types: /8087 /80287 /80386 and /80486.
  670.                     Note the /80486 cpu always has a built in
  671.                     processor.  In SNIFF /NPX just displays your
  672.                     numeric coprocessor type.
  673.  
  674. OR                  Allows you to do several groups of tests.  Only
  675.                     one group needs to succeed to be considered as
  676.                     overall success:  e.g.
  677.                          NEED  80387 80386   OR   80486
  678.                     This means you must have BOTH and 80387 and an
  679.                     80386, OR an 80486 which has a built in numeric
  680.                     co-processor.  See further hints later.
  681.  
  682. PCCACHE             You require Central Point's PCTools PCCACHE disk
  683.                     cacher to be loaded.  Note there is no dash in the
  684.                     name.  It has been tested with version 4.4 and
  685.                     6.0.  I do not yet know if it works with other
  686.                     versions, in particular 7.1.
  687.  
  688. PCDOS               You must currently be running some version of IBM
  689.                     PC DOS.  NEED has a difficult time telling PC DOS
  690.                     apart from MS DOS, and in many cases will confuse
  691.                     them.  NEED works by asking DOS which drive is the
  692.                     Boot drive.  In versions prior to 4.00, DOS does
  693.                     not know, so NEED just guesses the same as the SET
  694.                     COMSPEC=C:\DOS\COMMAND.COM:.  Then it looks for
  695.                     the hidden, system read-only file called
  696.                     IBMBIO.COM.  If it finds it, it presumes PCDOS,
  697.                     otherwise it assumes MSDOS.  You can see the many
  698.                     ways this test could fail to operate properly.
  699.                     1.  Olivetti MS DOS calls their file IBMBIO.COM
  700.                     instead of IO.SYS.
  701.                     2. If you booted from A: with PCDOS 3.3, and set
  702.                     your COMSPEC to C:, NEED will not know to look on
  703.                     your floppy.
  704.                     3.  You have installed DRDOS on top of your PCDOS.
  705.                     It leaves the IBMBIO.COM file in place.
  706.                     Normally you should use plain /DOS5.0 when it does
  707.                     not matter if you have PC or MS DOS.  I have
  708.                     discovered the following MSDOS versions masquerade
  709.                     as PCDOS:  Compaq, Wyse, DRDOS, Corona, possibly
  710.                     Northgate.  See /MSDOS.
  711.  
  712. PCDOS4.00!          You must currently be running version 4.00 of
  713.                     IBM's PC DOS.
  714.  
  715. PERI                You must be running under the Periscope debugger.
  716.  
  717. PERI5.1             You must be running under Periscope 5.1
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733. PERISCOPE           You must be running under the Periscope debugger.
  734.  
  735. PERISCOPE5.1        You must be running under Periscope 5.1.  Works
  736.                     for any version.
  737.  
  738. PS2                 You must have a PS/2 style BIOS.  Note there is NO
  739.                     slash!  This test is NOT for detecting
  740.                     microchannel computers.  See /BIOS.
  741.  
  742. QEMM                You must be running under the control of the QEMM
  743.                     memory manager from Quarterdeck.
  744.  
  745. QRAM                You must be running under the control of the QRAM
  746.                     memory manager from Quarterdeck.
  747.  
  748. RAM:500K+           There must be at least 500K free conventional RAM.
  749.                     NEED automatically adjusts the figure to be what
  750.                     you would have if NEED were not running.  NEED
  751.                     gives you the size of the largest free chunk into
  752.                     which you could load a program -- not the
  753.                     aggregate size of all the little free RAM
  754.                     fragments.   Note SNIFF /RAM will tell you the
  755.                     amount of UNUSED, FREE, UNALLOCATED, AVAILABLE
  756.                     conventional RAM.  IT DOES NOT REPORT THE *TOTAL*
  757.                     AMOUNT OF conventional RAM.  Only unallocated RAM
  758.                     is of any interest or use to programs.  Often all
  759.                     your conventional RAM has been eaten up by TSRs,
  760.                     so that explains why there is so little left.
  761.  
  762. REAL                You must be running in REAL mode, i.e. not under a
  763.                     virtual memory manager or any DOS extender that
  764.                     runs in protected mode.  If you were running under
  765.                     Windows in /r mode, but had QEMM working, you
  766.                     would be in virtual mode.  If you were running
  767.                     under Windows standard or enhanced mode you would
  768.                     be in virtual mode.  If your run in the OS/2
  769.                     compatibility box, you will be in REAL mode, even
  770.                     if you have an 80386 or 80486.  If your are
  771.                     running under QEMM, you will always be in virtual
  772.                     mode.
  773.  
  774. SATURDAY!           It must be Saturday.  Sunday is considered the
  775.                     first day of the week if you use + and - suffixes.
  776.  
  777. SHARE               You must have DOS SHARE active.  If you are
  778.                     running in Windows Enhanced mode, Windows acts
  779.                     like SHARE to help the various multi-processing
  780.                     tasks stay out of each other's hair, and so it
  781.                     will appear as if the SHARE utility itself is
  782.                     loaded.
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799. SLOW                SLOW forces any sensitive subsequent tests to be
  800.                     done the slow duddy, inaccurate, mundane, Windows
  801.                     way.  You would use this if, for example, you had
  802.                     an ancient version of QEMM that was interfering
  803.                     with the CPU type determination tests.  NEED
  804.                     automatically uses the SLOW tests when it detects
  805.                     Windows in enhanced mode.  If your virtual monitor
  806.                     is interfering with a test and exploding, try
  807.                     using SLOW.  e.g.
  808.                          NEED  SLOW  SX
  809.  
  810. SMARTDRIV!          You require that the SMARTDRIV.SYS caching program
  811.                     be loaded.  Other brands of cacher that mimic
  812.                     SMARTDRV may give false positives, however NCACHE
  813.                     and PCACHE will not since there are special checks
  814.                     for them.
  815.  
  816. SUNDAY!             It must be Sunday.  Sunday is considered the first
  817.                     day of the week if you use + and - suffixes.
  818.  
  819. SX!                 You require an 80386-SX cpu.
  820.  
  821. THURSDAY!           It must be Thursday.  Sunday is considered the
  822.                     first day of the week if you use + and - suffixes.
  823.  
  824. TUESDAY!            It must be Tuesday.  Sunday is considered the
  825.                     first day of the week if you use + and - suffixes.
  826.  
  827. V20!                You require a NEC V20 cpu.
  828.  
  829. V30!                You require a NEC V30 cpu.
  830.  
  831. VCPI                You must be running under the control of a Virtual
  832.                     Control Program Interface  (VCPI).  If you have
  833.                     QEMM or 386MAX you will see VCPI active.  It will
  834.                     remain active under Windows real and standard
  835.                     versions but will disappear under Windows enhanced
  836.                     since Windows enhanced mode cannot tolerate
  837.                     programs that use protected mode, unless they are
  838.                     specially coded to run by Windows rules.
  839.  
  840. VCPI:500K+          Your require at least 500K free RAM under the
  841.                     control of a Virtual Control Program Interface
  842.                     (VCPI).  By now you get the idea.  SNIFF /VCPI
  843.                     reports FREE VCPI RAM, not total VCPI RAM.  A
  844.                     program like DESQView might take it all to parcel
  845.                     out to support its windows.
  846.  
  847. WEDNESDAY!          It must be Wednesday.  Sunday is considered the
  848.                     first day of the week if you use + and - suffixes.
  849.  
  850.  
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865. WEEKDAY+            This does not make much sense in NEED or AVOID,
  866.                     but in SNIFF it can be used to display the day of
  867.                     the week e.g. Sunday.
  868.  
  869. WIN2!               You must me running under Windows 386 version 2.x
  870.  
  871. WIN3E!              You must be running under Windows 3 in Enhanced
  872.                     mode.  When you are in enhanced mode, you will
  873.                     find the DPMI manager becomes active, and Windows
  874.                     suddenly thinks it is impertinent to ask about
  875.                     VCPI.  If you do, she will give you a protection
  876.                     violation.  SNIFF just says VCPI is not there if
  877.                     WIN3E is present.
  878.  
  879. WIN3R!              You must be running under Windows 3 in Real mode.
  880.                     If you have QEMM running the Microsoft Windows
  881.                     test reports Windows in real mode as if it were in
  882.                     standard mode.  Since the machine is in REAL mode,
  883.                     you will never see any DPMI protected mode RAM.
  884.  
  885. WIN3S!              You must be running under Windows 3 in Standard
  886.                     mode.  Since the machine is in REAL mode, you
  887.                     won't see any DPMI protected mode RAM.
  888.  
  889. WINDOWS+            You must be running under control of some version
  890.                     of Windows (even version 2 is ok).   In SNIFF it
  891.                     displays the version of Windows you are using if
  892.                     any.
  893.  
  894. XMS                 There must be an XMS extended memory manager
  895.                     active.
  896.  
  897. XMS:400K+           There must be at least 400K of free extended RAM
  898.                     managed by an XMS memory manager.  Sniff /XMS
  899.                     reports only FREE XMS RAM, not total XMS RAM.  If
  900.                     you have less than you think you should, consider
  901.                     that with QEMM, XMS and EXP memory are drawn from
  902.                     the same pool.  An EXPANDED memory user may have
  903.                     gobbled up your XMS RAM.  Many programs quietly
  904.                     eat up EXP RAM -- 4DOS, BTRIEVE, . . .  If you are
  905.                     running under DESQView, you control the amount of
  906.                     XMS RAM available to a window with the [Maximum
  907.                     Expanded Memory Size in K] option.  QEMM treats
  908.                     XMS and EXP as if they were almost the same.
  909.  
  910. XT                  You require an XT style BIOS.  See /BIOS.
  911.  
  912. YEAR:1992!          This means you can only run the program in the
  913.                     year 1992.  If you used /YEAR:1992+ you could only
  914.                     run it starting in 1992 and in subsequent years.
  915.                     Note you MUST specify /YEAR:1991.  You cannot just
  916.                     say /1991.
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931. Z:10.0MB+           Drive Z must have 10 MB or more free space on it.
  932.  
  933.  
  934. TROUBLE SHOOTING
  935.  
  936.  
  937. WRONG AMOUNT OF RAM, DISK SPACE, ETC
  938.  
  939. Many users have reported a "bug" that NEED, AVOID and SNIFF are
  940. calculating the free memory or free disk space incorrectly.  These
  941. programs are designed to calculate **FREE** space -- NOT TOTAL SPACE!
  942. In other words they calculate how much room is LEFT.
  943.  
  944. NEED and AVOID are the advance guard who go in to see if it safe for
  945. more delicate programs to follow.  These application programs don't
  946. give two hoots how much RAM you have or how much disk space you have
  947. in total.  What they care about is how much RAM or disk space is
  948. AVAILABLE that they can USE.
  949.  
  950. In addition users are alarmed when SNIFF reports NO free XMS RAM or no
  951. free EXPANDED RAM.  Often, the reason there is no FREE RAM, is because
  952. some program is USING all of it.  This is good.  Otherwise you would
  953. be WASTING it.
  954.  
  955. Under DESQview no XMS, EXPANDED or EXTENDED memory is available unless
  956. you edited the PIF to tell DESQview to allot some.
  957.  
  958. Also merely having Extended or Expanded RAM hardware is not enough for
  959. it to be usable by your programs.  For expanded RAM you must have an
  960. expanded memory manager of some kind.  For extended RAM you must have
  961. an INT 15 or XMS or VDISK style memory manager.  Usually the expanded
  962. and XMS drivers are loaded as part of CONFIG.SYS.  Int 15 should
  963. supported as part of your AT BIOS.  If you don't have an appropriate
  964. memory manager, the memory is not usable and so SNIFF will report 0
  965. bytes available.
  966.  
  967.  
  968. CANNED BAT FILES
  969.  
  970. I have included a sample file called SHOW.BAT that exercises SNIFF to
  971. tell you everything it knows about your machine.  You can use that as
  972. a model to create your own works using SNIFF.  Make sure SNIFF.Com is
  973. on the path or modify the file to use explicit directory names on
  974. SNIFF.COM.
  975.  
  976. I have also included a sample file called TSTNEED.BAT that exercises
  977. NEED.  You can use it to model your use of NEED.COM.  There is also a
  978. file called TSTAVOID.BAT that exercises AVOID.COM.
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997. TRACKING THE CAUSE OF ERRORS
  998.  
  999. NEED and AVOID are not very helpful in their error messages.  If you
  1000. are having trouble figuring out what NEED or AVOID are complaining
  1001. about, try your tests separately rather than putting many on one line.
  1002. However, by looking at which tests on the line it has completed, you
  1003. can guess which command it is choking on.
  1004.  
  1005. Perhaps you have inserted some invalid space.  Particularly watch
  1006. /DOS4.01, not /DOS_4.01.  Perhaps you have applied a suffix +, ! or -
  1007. that does not make sense in that context.
  1008.  
  1009. Perhaps you are using one of the parameters that has not been
  1010. implemented yet.  You might be trying something like /QEMM:5.12.
  1011. There IS no version support test for QEMM yet.
  1012.  
  1013. Possibly you have found a bug in NEED/AVOID/SNIFF.  This is most
  1014. likely if you are using an older version of DOS.  I personally have
  1015. only tested with MS DOS 4.01 and DOS 5.0, though my beta testers have
  1016. tried it on quite a variety of machines.
  1017.  
  1018. You can try the SLOW parameter if your machine is hanging on the CPU
  1019. type determination tests.  e.g. try:
  1020.  
  1021.      NEED   /SLOW   486
  1022.      NEED   /SLOW   SX
  1023.  
  1024.  
  1025. CARE WITH COLONS
  1026.  
  1027. Be careful with colons.  Sometimes they must be present.  Sometimes
  1028. they must be absent.  Check the list of supported combinations.  Note
  1029. the following:
  1030.  
  1031.      NEED  DOS4.01       *NOT*  NEED DOS:4.01
  1032.  
  1033.      NEED  MSDOS         *NOT*  NEED MSDOS:
  1034.  
  1035.      NEED  C:40K         *NOT*  NEED C40K
  1036.  
  1037.      NEED  MOUSE         *NOT*  NEED MOUSE2.0
  1038.  
  1039.      NEED  EXT:1         *NOT*  NEED EXT
  1040.  
  1041.  
  1042. INVALID SUFFIXES
  1043.  
  1044. You and I may have a disagreement about which suffixes make sense on
  1045. which parameters.  If NEED rejects your command line, try removing
  1046. suffixes.  Note the following is ILLEGAL.  Even if it were legal, it
  1047. would not mean what you think:
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  
  1061.  
  1062.  
  1063.      NEED  DESQview-
  1064.  
  1065. Instead, to insist DESQview to be absent, say:
  1066.  
  1067.      AVOID  DESQview
  1068.  
  1069. Even though I don't show it in the manual, actually the ! suffix is
  1070. always allowed, so the following is LEGAL.
  1071.  
  1072.      NEED  DESQview!
  1073.  
  1074.  
  1075. AND VERSUS OR
  1076.  
  1077. The most likely error you will make is this:
  1078.  
  1079.      NEED /80286 /80386DX
  1080.  
  1081. This will always fail.  What is says is your CPU must be
  1082. simultaneously both an 80286 AND and 80386.  It cannot, so the test
  1083. always fails.  All the tests on the line must pass.  To get the effect
  1084. of 80286 OR 80386 you could handle this in several ways:
  1085.  
  1086.      NEED  80286  OR  80386DX
  1087.  
  1088. If you wanted to include the SX too, you would have to say:
  1089.  
  1090.      NEED  80286  OR  80386SX  OR  80386-DX
  1091.  
  1092. You could also handle it by testing one at a time:
  1093.  
  1094.      NEED  80286! >NUL:
  1095.      IF NOT ERRORLEVEL 1 GOTO OK
  1096.      NEED  80386! >NUL:
  1097.      IF NOT ERRORLEVEL 1 GOTO OK
  1098. :TROUBLE
  1099.      ECHO Neither 80286 nor 80386
  1100.      ...
  1101. :OK
  1102.      ECHO Is an 80286 or an 80386
  1103.  
  1104. The >NUL: hides the error messages that NEED would generate.  Note the
  1105. spelling of >NUL: with one "L".  If you said >NULL DOS would try to
  1106. direct the output to a file called NULL.  On a LAN this might not be
  1107. legal.
  1108.  
  1109. You could handle it another way -- using AVOID.
  1110.  
  1111.      AVOID  8086-   80486+
  1112.  
  1113. This says avoid any cpu the equivalent of an 8086 or lower, and an
  1114. 80486 or higher.  Anything else should be an 80286, SX or 80386.
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130. You are likely to make a similar same error this way:
  1131.  
  1132.      NEED Monday Wednesday Friday
  1133.  
  1134. That will not work because NEED is so pea-brained it thinks you mean
  1135. it must be Monday AND Wednesday AND Friday all at the same time, today
  1136. -- which can never happen.  You need to say:
  1137.  
  1138.      NEED   Monday  OR  Wednesday  OR  Friday
  1139.  
  1140. Note that ALL those ORs are needed.  You CANNOT say:
  1141.  
  1142.      NEED  Monday  Wednesday  OR  Friday
  1143.  
  1144. Dinosaur-brained NEED thinks you mean NEED (Monday AND Wednesday) OR
  1145. Friday.  Note that NEED does not understand parentheses or the word
  1146. "AND" -- just the word "OR".
  1147.  
  1148. You can use NEEDs insistence on redundancy to your advantage.  If you
  1149. say:
  1150.  
  1151.      NEED  C:4MB EXT:1MB   OR   C:5MB
  1152.  
  1153. This means you need 4MB free on C: AND a megabyte free extended RAM,
  1154. or failing that 5 MB free on C:, or both.  It a good idea to leave a
  1155. few extra spaces before and after the word OR to make the meaning
  1156. clear to your readers.  NEED does not need the extra space.
  1157.  
  1158.  
  1159. DESQVIEW
  1160.  
  1161. If you are using DESQview, run NEED, AVOID and SNIFF at protection
  1162. level 0 (set on the second page of PIF options).  NEED does some
  1163. tricky instructions to find out what sort of CPU you have, and if you
  1164. have the protection turned up DESQview/QEMM will freak.
  1165.  
  1166. If you have a very old version of DESQview or QEMM you may have to use
  1167. the SLOW parameter.
  1168.  
  1169. DESQview will provide no extended, expanded or XMS RAM to a program
  1170. running under it unless you set the Maximum Expanded Memory Size in K
  1171. on the second page of the CP (change program) screen.  That one number
  1172. provides a pool of RAM from which expanded or extended RAM can be
  1173. carved.
  1174.  
  1175.  
  1176. WINDOWS
  1177.  
  1178. Windows is full of bugs and interferes in many ways with NEED, SNIFF
  1179. and AVOID.  I did the best I could to defend these programs against
  1180. Window's meddling.  I had to revert to some extremely SLOW, inaccurate
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195. tests in place of the normal ones to avoid invoking Window's wrath.
  1196. In addition, Windows interferes with ANSI.SYS.  Under older versions
  1197. of DOS, in REAL mode ANSI.SYS hangs up unless you give it a prod by
  1198. hitting a key when NEED asks for a cursor position report during the
  1199. ANSI test.
  1200.  
  1201.  
  1202. WINDOWS AND HIMEM.SYS
  1203.  
  1204. If you use Windows with Himem.Sys, here is what to expect:
  1205.  
  1206.                          real      std       enhanced
  1207.  
  1208.                          /r        /s        /3
  1209.  
  1210. expanded RAM             no        no        yes
  1211.  
  1212. extended RAM             yes       no        yes
  1213.  
  1214. XMS                      yes       no        yes
  1215.  
  1216. VCPI                     no        no        no
  1217.  
  1218. DPMI                     no        no        yes
  1219.  
  1220. REAL mode                yes       yes       no
  1221.  
  1222. Please note: There is NO VCPI ever and NO DPMI except in /3 enhanced
  1223. mode.  This is NORMAL.  About ten people have reported it as a bug.
  1224.  
  1225.  
  1226. WINDOWS AND QEMM
  1227.  
  1228. If you use Windows with Quarterdeck's QEMM.Sys, here is what to
  1229. expect:
  1230.  
  1231.                          real      std       enhanced
  1232.  
  1233.                          /r        /s        /3
  1234.  
  1235. expanded RAM             yes       no        yes
  1236.  
  1237. extended RAM             yes       no        yes
  1238.  
  1239. XMS                      yes       no        yes
  1240.  
  1241. VCPI                     yes       yes       no
  1242.  
  1243. DPMI                     no        no        yes
  1244.  
  1245. REAL mode                no        no        no
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.  
  1261. Please note: Windows gobbles up all the XMS RAM in /s mode.  The XMS
  1262. driver is there, but all the RAM is gone.  Because QEMM provides both
  1263. EMS and XMS from the same pool of RAM, effectively Windows in standard
  1264. mode then gobbles up all the expanded RAM as well.  QEMM does its
  1265. memory mapping magic by using the PAGING (virtual memory) mapping
  1266. registers.  To do this it puts the machine into virtual 86 mode.  That
  1267. is why Windows /r (REAL mode) shows up as virtual.
  1268.  
  1269.  
  1270. CRASHES
  1271.  
  1272. Sometimes NEED, SNIFF and AVOID will just hang up or make the machine
  1273. go crazy.  In those cases you can try the SLOW parameter to use the
  1274. less accurate, slower tests.
  1275.  
  1276. For example try:
  1277.  
  1278.      SNIFF   SLOW   CPU
  1279.  
  1280.      NEED    SLOW   SX+
  1281.  
  1282. Here are the tests that most likely might give you trouble if you run
  1283. with a meddling virtual monitor (such as Windows, Compaq memory
  1284. management, QEMM, 386MAX etc.).  A VM is a sort of mother program that
  1285. slaps your wrists any time you use "interesting" instructions.  What
  1286. follows is tech-talk.  Don't worry if it makes no sense.
  1287.  
  1288. REAL vs Virtual     Sniff does an smsw instruction that mother might
  1289.                     not like.  Other tests may do a REAL test as a
  1290.                     side effect.
  1291.  
  1292. 286 vs 386          Sniff used to do an SGDT instruction, but windows
  1293.                     meddled and made everything look like a 286.
  1294.                     Sniff no longer ever uses this test.  The code for
  1295.                     it is available as part of the registered version,
  1296.                     as commentary.
  1297.  
  1298. SX vs 386           Sniff tries to toggle bit 4 (the ET bit) of
  1299.                     register CR0.  If you have an SX, 386 or 486, this
  1300.                     test will be used.  This bit tells which kind of
  1301.                     NPX you have.
  1302.  
  1303. 386 vs 486          Sniff tries to toggle bit 18 (the AC alignment
  1304.                     check bit) in the extended flags register.  Some
  1305.                     virtual monitors will not let you.  If you have an
  1306.                     SX, 386 or 486, this test will be used.
  1307.  
  1308.  
  1309. REPORTING BUGS
  1310.  
  1311. The following people helped test out about 15 versions of
  1312. NEED/AVOID/SNIFF before we let it loose on the world at large.  They
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327. go by the Bix handles of: aGurski, aRog, Blaszczak, bQuerry, bStrauss,
  1328. dSparks, Fred.Robinson, gChicares, hGessau, instantel, JeBarr,
  1329. lFirrantello, Ligo, M.Love, macbeth, Mike123, mReay, pRoub, rbabcock,
  1330. rlis, sSchneider, terjeM, tron and wlMoore.  Even more, they helped
  1331. write the code and research the code.
  1332.  
  1333. After 3.0 went out, these people reported and helped track down more
  1334. bugs: avi, making, rCharney, tfrost, tjeffries and yendor.
  1335.  
  1336. They found all kinds of problems, especially when testing on older or
  1337. oddball machines.  There is still a good chance you might get to have
  1338. the joy of finding a bug for yourself.  If you do, please report it.
  1339.  
  1340. PLEASE LABEL FILES WITH YOUR NAME.  When you send me code, messages or
  1341. bug reports, please label everything with your name and a way to
  1342. contact you (e.g. your BIXid) INSIDE THE FILE.  I receive so many
  1343. downloaded files, I have no way of remembering who sent me what.  I
  1344. WANT to give you credit.
  1345.  
  1346. PLEASE TELL ME ABOUT YOUR MACHINE.  There have not been any bugs in
  1347. quite a while I could reproduce on my computer or any of the computers
  1348. in my office.  The bugs you find are most likely specific to your
  1349. machine.  I need to know as much as possible about your machine so I
  1350. can code around whatever is making the code fail.  Please tell me at
  1351. least:  Manufacturer and version of DOS, CPU chip Type, BIOS maker,
  1352. anything unusual about your machine.  If you have any assembler
  1353. debugging experience, please let me know that too.
  1354.  
  1355. I have tested all of this code many times.  It works fine on MY
  1356. machine and on about 25 other people's machines.  If it does not work
  1357. on yours, it is most likely because there is something different about
  1358. your machine and mine.  So if you baldly tell me the XXX test does not
  1359. work, that gives me no clues to track it down.
  1360.  
  1361. To avoid embarrassment, check the notes in this manual on the
  1362. parameter you are reporting on and the trouble shooting section.  It
  1363. might be I deliberately designed the program to behave differently
  1364. than you expected, or there is a bug I already know about that I
  1365. cannot bypass.
  1366.  
  1367. And finally TELL ME WHICH VERSION OF NEED you are using, every time
  1368. you report a problem.  I don't have records of which versions each of
  1369. you are using.  I have been putting out sometimes three versions a
  1370. day, and you may be reporting a bug that was already fixed, or you may
  1371. be reporting an old one that has resurfaced in a new form.  To find
  1372. out the version just type NEED, SNIFF or AVOID by itself on the
  1373. command line.
  1374.  
  1375. To make it very clear what the bug is, tell me exactly what you typed
  1376. -- preferably only one test on a line, what result came back, and what
  1377. result you were expecting.  Sometimes people send me long lists of
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393. what look like perfectly valid test results.  They forget I don't know
  1394. anything about what the results SHOULD look like.
  1395.  
  1396.  
  1397. UNFINISHED BUSINESS
  1398.  
  1399. /ANSI               Windows in real mode has a bug that interferes
  1400.                     with cursor position reporting.  This interferes
  1401.                     with the /ANSI test in old versions of DOS under
  1402.                     Windows.  If you use redirection, the fallback
  1403.                     ANSI test (only used in old versions of DOS) will
  1404.                     not work.
  1405.  
  1406. /SX vs /DX          Windows interferes with the normal test so I have
  1407.                     to use a less accurate test that takes an
  1408.                     obscenely long time to run.
  1409.  
  1410. /386 vs /486        Windows interferes with the normal test so I have
  1411.                     to use a less accurate test.
  1412.  
  1413. /PCDOS vs /MSDOS    I have not been able to find a completely reliable
  1414.                     way to tell IBM PC DOS apart from Microsoft MS
  1415.                     DOS.  Part of the problem is vendors deliberately
  1416.                     broke the rules to make their products look more
  1417.                     like IBM PC DOS than they were supposed to.
  1418.  
  1419.  
  1420. IDEAS FOR FUTURE VERSIONS
  1421.  
  1422. /83KEY              You have an XT type keyboard
  1423.  
  1424. /84KEY              You have an AT type keyboard
  1425.  
  1426. /102KEY             You have a PS/2 type keyboard
  1427.  
  1428. /CP:134             Ensures a given code page is loaded.
  1429.  
  1430. /FCBS               How many free FCBs for opening DOS 1.1 style
  1431.                     files.  This might be impossible to code without
  1432.                     interfering with your TSRs.
  1433.  
  1434. /MONO               IBM Monochrome, Herc, Herc-Plus, EGA or VGA
  1435.                     available -- something capable of emulating mono
  1436.                     text.
  1437.  
  1438. /HERC               Hercules or Hercules-Plus card present
  1439.  
  1440. /HERCPLUS           Hercules Plus card present
  1441.  
  1442. /INCOLOUR           Hercules Incolour card present
  1443.  
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459. /CGA                Original IBM CGA card or anything capable of
  1460.                     emulating it, e.g. EGA, VGA
  1461.  
  1462. /EGA                EGA card present
  1463.  
  1464. /VGA                VGA card present
  1465.  
  1466. /GRAYSCALE          Grayscale VGA
  1467.  
  1468. /PCKWIK             Super PCKwik cache present
  1469.  
  1470. CANARY              A utility that runs the tests in order of
  1471.                     difficulty.  It would run the easy ones first,
  1472.                     then the ones that require greater compatibility.
  1473.                     It would die part way through.  Your rank before
  1474.                     death is your canary compatibility rating.  You
  1475.                     would use it to test a clone before you bought it.
  1476.                     I would add tests not part of the current suite.
  1477.  
  1478. If you have ideas on how to code any of the above, or better tests for
  1479. any of the existing NEED commands, please let me know.
  1480.  
  1481.  
  1482. MODIFYING NEED AND AVOID
  1483.  
  1484. NEED and AVOID are written in MASM.  Registered users get the source
  1485. code to use as they like.  You may simply want to pick through it to
  1486. cannibalize ideas or routines for your own programs.  You may just
  1487. want to satisfy your curiosity how I did some of the tests.
  1488.  
  1489. The heavily commented code was written to make this as easy as
  1490. possible.  In addition, in each routine I give references to textbooks
  1491. and essays where I figured out how to write the code, so this can be a
  1492. starting point for your own more clever routines.
  1493.  
  1494. If you want to add your own tests to NEED, all you need to do is write
  1495. an assembler routine that does the test and returns the result in
  1496. DX:AX.  It may trash any registers.
  1497.  
  1498. There are three basic kinds of test:
  1499.  
  1500.   1. implied: e.g. /DESQview.  Your test routines test returns 0
  1501.      for not present and 1 for present in AX.  The implied "level
  1502.      of presence" desired is 1.  Just ahead of the routine you
  1503.      must fill in a table entry that tells the name of your new
  1504.      command, the name of your test, and set of flags on which
  1505.      Suffixes are permitted.  You don't have to make any
  1506.      adjustments to the program, just add your routine.
  1507.  
  1508.   2. Capacity: e.g. /RAM:604K.  In this type your routine returns
  1509.      the amount of RAM or whatever in DX:AX.  The user specifies
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.      the amount of it desired after the colon on the command
  1526.      line.
  1527.  
  1528.   3. Version: e.g. /PCDOS4.01  The version number follows the
  1529.      command name without any separating punctuation.  In this
  1530.      case your routine returns the version number multiplied by
  1531.      100 in AX.  e.g. DOS3.01 becomes 301.
  1532.  
  1533. The best way to add a command is just to find a parameter you
  1534. understand, similar to the one you want to add, and use that as a
  1535. model.  You don't have to understand any of the general purpose
  1536. parser.  Everything you have to do is localized in one place.
  1537.  
  1538. You also have to write a display routine that display the result of
  1539. your test.  There are a number of subroutines you can use to make that
  1540. easier.  Your display routine expects the value in DX:AX and may trash
  1541. any registers it pleases.  e.g. it might display "DESQview detected"
  1542. when passed 1 in DX:AX.
  1543.  
  1544. NEED, AVOID and SNIFF are so similar, they use the same source code.
  1545. You simply change one equate called GENERATING, then you can generate
  1546. a copy of NEED, AVOID or SNIFF.  Usually I do this automatically with
  1547. the /D parameter on the OPTASM assembler.
  1548.  
  1549.  
  1550. VERSION HISTORY
  1551.  
  1552.  
  1553. WHAT'S NEW IN VERSION 4.8
  1554.  
  1555. - detects non-standard Phoenix ATs that use FC:81 model id.
  1556.  
  1557.  
  1558. WHAT'S NEW IN VERSION 4.7
  1559.  
  1560. - BIOS test now works even if the BIOS fails to support the INT 15
  1561.   equipment determination interrupt properly.
  1562.  
  1563.  
  1564. WHAT'S NEW IN VERSION 4.6
  1565.  
  1566. - LAN test had a problem with a DOS bug.  DOS uses int 2f function
  1567.   1500 for both detecting CD-ROMS and Graphics.Com.  CD-ROM drives
  1568.   masquerade as LAN drives.  I have tried a new method to get around
  1569.   the bug.  Reginald Charney reported this bug.
  1570.  
  1571. - Phoenix 486 computers were using a new machine id code, rather than
  1572.   duplicating one of IBM's.  I added code FC 03 as an AT code.
  1573.   Reginald Charney reported this bug.
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.  
  1589.  
  1590.  
  1591. WHAT'S NEW IN VERSION 4.5
  1592.  
  1593. - 4DOS presence test
  1594.  
  1595.  
  1596. WHAT'S NEW IN VERSION 4.4
  1597.  
  1598. - NCACHE to detect presence of Norton Disk cacher.
  1599.  
  1600. - PCCACHE to detect presence of PCTools cache.
  1601.  
  1602. - SMARTDRIV no longer gives false positives for NCACHE and PCCACHE.
  1603.  
  1604.  
  1605. WHAT'S NEW IN VERSION 4.3
  1606.  
  1607. - SMARTDRV test for caching program.
  1608.  
  1609. - fancier QEMM test that would not be fooled by a file of the same
  1610.   name as the device driver.
  1611.  
  1612.  
  1613. WHAT'S NEW IN VERSION 4.2
  1614.  
  1615. - bug in ASSIGN test fixed.
  1616.  
  1617.  
  1618. WHAT'S NEW IN VERSION 4.1
  1619.  
  1620. - released to BIX 1991 June 25.
  1621.  
  1622. - KEYB documented and fixed to work under DOS 5.0.
  1623.  
  1624. - QEMM serious bug in test, just exits.  Now fixed.
  1625.  
  1626.  
  1627. WHAT'S NEW IN VERSION 4.0
  1628.  
  1629. - released to BIX 1991 June 14
  1630.  
  1631. - mostly fixes in the documentation.  References to DOS 5, Share,
  1632.   Windows problems.
  1633.  
  1634.  
  1635. WHAT'S NEW IN VERSION 3.9
  1636.  
  1637. - released to the Vancouver PC User Society
  1638.  
  1639.  
  1640. WHAT'S NEW IN VERSION 3.8
  1641.  
  1642. - code changed in the HANDLES test to make it DOS 2.1 compatible.
  1643.  
  1644.  
  1645.  
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657. WHAT'S NEW IN VERSION 3.7
  1658.  
  1659. - both fast and slow 386 vs 486 test.  The fast test works fine under
  1660.   Windows but fails under some virtual memory managers such as
  1661.   Compaq's expanded memory manager.
  1662.  
  1663. - the generic /DOS5.0 test now properly displays DR DOS when run under
  1664.   DR DOS.
  1665.  
  1666.  
  1667. WHAT'S NEW IN VERSION 3.6
  1668.  
  1669. - detect more types of PS/2 BIOS and discriminate them from AT BIOSes
  1670.   with the same model type.
  1671.  
  1672. - added parameters so you can request or avoid PS2 and EXOTIC.
  1673.  
  1674. - added version checks on many interrupt calls to not even try the
  1675.   call unless the DOS version is high enough.  This should make the
  1676.   code as a whole more robust on old DOS versions.
  1677.  
  1678. - use of documented ASSIGN test rather than undocumented one.  This
  1679.   should make the test more robust on non-standard DOS versions.
  1680.  
  1681. - consistent wording -- NOT DETECTED used throughout rather than "NOT
  1682.   PRESENT" since many tests can give false negatives.
  1683.  
  1684. - Fixed bug in the test for PCDOS Version.  (I inadvertently deleted
  1685.   two lines of the routine.)
  1686.  
  1687. - new test to discriminate WIN3R from WIN3S.
  1688.  
  1689.  
  1690. WHAT'S NEW IN VERSION 3.5
  1691.  
  1692. - new HANDLES:15 parameter to ensure there are sufficient file
  1693.   handles.
  1694.  
  1695. - ALL.BAT to compile the SNIFF, AVOID and NEED automatically.
  1696.  
  1697. - divide overflow bug fixed.  The Divide-by-10 routine failed to
  1698.   consider dividing 640K by 10 would trigger overflow.
  1699.  
  1700. - command line of all blanks now treated identically to a null command
  1701.   line.
  1702.  
  1703. - the CPU type determining tests that measure the instruction pre-
  1704.   fetch queue (PIQ) length are now done four times, hopefully to
  1705.   sidestep some of the random effects of DMA refresh.
  1706.  
  1707. - even better code to detect a non-functioning BIO int 15 during the
  1708.   extended RAM test.
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.  
  1721.  
  1722.  
  1723. WHAT'S NEW IN VERSION 3.4
  1724.  
  1725. - new DEBUG command to turn on debugging register dumps.
  1726.  
  1727. - new PCDOS test that should not be confused by DRDOS.
  1728.  
  1729. - better code to guard against non-functioning BIOS routines in the
  1730.   extended RAM determination.
  1731.  
  1732.  
  1733. WHAT'S NEW IN VERSION 3.3
  1734.  
  1735. - this version has debugging code to dump registers at various points
  1736.   during the NEED C: and NEED EXP:40K commands.  The intent is to
  1737.   track down the source of division overflow and freezing up in Compaq
  1738.   DOS and DR DOS.
  1739.  
  1740. - new DOCs warning people of the difference between FREE RAM and total
  1741.   RAM.
  1742.  
  1743.  
  1744. WHAT'S NEW IN VERSION 3.2
  1745.  
  1746. - credits added in the source code for all the methods used.
  1747.  
  1748. - new cleaner Btrieve Test.
  1749.  
  1750. - new MSDOS test that does not get confused by the presence of DRDOS.
  1751.  
  1752.  
  1753. WHAT'S NEW IN VERSION 3.1
  1754.  
  1755. - fix problem with 486 appearing as an SX.  Reported by Tfrost.
  1756.  
  1757. - change word "prefix" to "suffix" in the docs.
  1758.  
  1759. - fix bug in test for ASSIGN installed.  Reported by MKropp.
  1760.  
  1761. - new way of testing BIOS -- using machine model bytes.   Should fix
  1762.   problems with exotic clones with strange CMOS.  Problems reported by
  1763.   aGurski and tFrost.
  1764.  
  1765. - two new BIOS types: EXOTIC and PS2.
  1766.  
  1767.  
  1768. WHAT'S NEW IN VERSION 3.0
  1769.  
  1770. - first version released to the public.
  1771.  
  1772. - new QRAM test.
  1773.  
  1774. - new parameter SLOW to force slow tests.
  1775.  
  1776.  
  1777.  
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.  
  1787.  
  1788.  
  1789. - shorten the SX test under windows.
  1790.  
  1791.  
  1792. WHAT'S NEW IN VERSION 2.5
  1793.  
  1794. - better PCDOS discrimination test.  Now uses SET COMSPEC to guess the
  1795.   boot drive.
  1796.  
  1797.  
  1798. WHAT'S NEW IN VERSION 2.4
  1799.  
  1800. - code to avoid crashing in BIOS-deficient machines.
  1801.  
  1802. - commas and decimal points now work, even when your DOS has bugs and
  1803.   does not support the Country separators.
  1804.  
  1805. - more sensitive BIOS type test to avoid false positives on XT.  It
  1806.   now checks that the month in CMOS is in the range 1..12 for ATs.
  1807.  
  1808. - tweaked code so that NEC V30 and V20 detected even when DMA refresh
  1809.   interferes with the test.
  1810.  
  1811.  
  1812. WHAT'S NEW IN VERSION 2.3
  1813.  
  1814. - yet another new improved DESQ test.  We now detect DESQ version.
  1815.  
  1816.  
  1817. WHAT'S NEW IN VERSION 2.2
  1818.  
  1819. - better test for DESQview.  Some DOSes sneak around the old one.
  1820.  
  1821. - new way of handling the default suffixes for AVOID so that things
  1822.   like AVOID WINDOWS gives the effect you intend.
  1823.  
  1824.  
  1825. WHAT'S NEW IN VERSION 2.1
  1826.  
  1827. - detect DRMDOS as /DRDOS
  1828.  
  1829. - new ANSI.SYS detector for Olivetti, fix Agurski's bug.
  1830.  
  1831. - simpler /WINDOWS test
  1832.  
  1833. - remove debug code
  1834.  
  1835. - better /486 test.
  1836.  
  1837. - SNIFF to display without having to specify what you want.
  1838.  
  1839. - new tests BIOS, CPU, NPX, WINDOWS and WEEKDAY primarily for SNIFF.
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855. - more sensitive PC vs MS DOS test.
  1856.  
  1857.  
  1858. WHAT'S NEW IN VERSION 2.0
  1859.  
  1860. - better /80286 test
  1861.  
  1862. - better SX vs DX test, however, we still use the old test under
  1863.   Windows 3.0 extended.
  1864.  
  1865. - run the SX vs DX test longer under Windows trying to average out the
  1866.   time slicing effects.
  1867.  
  1868. - Separate tests for Windows and non-Windows.
  1869.  
  1870. - Faster /REAL test that does not do a full CPU determination.
  1871.  
  1872. - add code for XT BIOSes that have no INT 15 support whatsoever  so
  1873.   that EXT:1+ gives 0.  Fixes M.Love's bug.
  1874.  
  1875. - inadvertently cleared up Agurski's /DESQview bug.
  1876.  
  1877.  
  1878. WHAT'S NEW IN VERSION 1.9
  1879.  
  1880. - /WIN3E erroneously reported as version 4, now fixed.
  1881.  
  1882. - VCPI test now returns 0 if running under WIN3E to avoid
  1883.   crashing.  Windows does not like programs asking about VCPI.
  1884.  
  1885. - new test to discriminate an 80286 from an 80386 that works
  1886.   even under Windows 386 enhanced mode.  Windows enhanced mode
  1887.   interfered with the old test.
  1888.  
  1889. - NEED no longer turns off DMA refresh.  It caused some machines
  1890.   to freeze.
  1891.  
  1892.  
  1893. WHAT'S NEW IN VERSION 1.8
  1894.  
  1895. - XT vs AT test now works at all times of day.  It used to think ATs
  1896.   were XTs after 6 PM at night.  (It turns out the clock is coded in
  1897.   BCD and I thought it was coded in binary).
  1898.  
  1899.  
  1900. WHAT'S NEW IN VERSION 1.7
  1901.  
  1902. - insert manual DMA refresh while automatic DMA turned off.
  1903.  
  1904. - Correct a bug in QRAM that caused freezing on some machines.
  1905.  
  1906. - Correct a bug in VCPI: test that caused freezing on some machines.
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921. - try CMOS test without High bit, to see if it works on Terje's
  1922.   machine.
  1923.  
  1924. - Guess C: as boot drive when boot drive unknown, in attempt to tell
  1925.   MS DOS and PC DOS apart.
  1926.  
  1927.  
  1928. WHAT'S NEW IN VERSION 1.6
  1929.  
  1930. - add begin/end critical section on CPU timing loop to stop DESQview
  1931.   from meddling during tests.  Should more accurately discriminate SX
  1932.   DX 486 CPUs.
  1933.  
  1934. - experimental code in Test for DESQview to it if it bypasses DOS bug
  1935.   giving false positive tests.
  1936.  
  1937. - new ANSI.SYS test that should detect things like DVANSI.SYS and
  1938.   ANSI.SYS in pre-DOS 4.00 that eluded the earlier test.
  1939.  
  1940. - safer VCPI test, tests for EMS driver first.
  1941.  
  1942. - turn off DMA refresh during queue length and SX timing test for more
  1943.   accurate results.
  1944.  
  1945. - DRDOS version number test added.
  1946.  
  1947. - LAN test no longer fooled by CD-ROM drives masquerading as remote
  1948.   LAN drives.
  1949.  
  1950. - /XT and /AT to test BIOS type.
  1951.  
  1952.  
  1953. WHAT'S NEW IN VERSION 1.5
  1954.  
  1955. - EXT:400K now includes two kinds of VDISK extended RAM, INT 15 RAM
  1956.   and XMS RAM in its calculations.
  1957.  
  1958. - PERI or PERISCOPE now detects presence of PERISCOPE DEBUGGER
  1959.  
  1960. - PERI5.1 or PERISCOPE5.0 now detects periscope version.
  1961.  
  1962. - NEED now does reports on the success or failure of all the tests.
  1963.   You can get rid of this with output redirection.
  1964.  
  1965. - OR allows you to continue if any one of a group of tests work.
  1966.  
  1967. - 80386-DX and other parameters with dashes in them were changed since
  1968.   the parser got confused by the dash, thinking it was a suffix.
  1969.  
  1970. - more relaxed rules on which suffixes are allowed.
  1971.  
  1972. - deleted /P1 /P2 /P3 cpu classes.
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987. - Avoid has more complex defaults for suffixes.  They are now
  1988.   specified on an individual basis for each command.
  1989.  
  1990.  
  1991. WHAT'S NEW IN VERSION 1.4
  1992.  
  1993. - ANSI detects presence of ANSI.SYS.
  1994.  
  1995. - MOUSE detects presence of a mouse.
  1996.  
  1997. - SX 386 and 486 now should be properly discriminated.
  1998.  
  1999. - Numeric co-processors should be correctly identified.
  2000.  
  2001.  
  2002. WHAT'S NEW IN VERSION 1.3
  2003.  
  2004. - /VCPI:400K test to test amount of Virtual Control Program Interface
  2005.   RAM.
  2006.  
  2007. - /QRAM to detect Quarterdeck's QRAM.
  2008.  
  2009. - /MONTH:12 to check for December.
  2010.  
  2011. - /YEAR:1991 to check for year.
  2012.  
  2013. - /DAY:31 to check that running an a given day of the month.
  2014.  
  2015.  
  2016. REGISTERING
  2017.  
  2018. I originally thought I would write NEED in a night, perhaps stretching
  2019. to a weekend.  It turned out to take an embarrassingly long time.
  2020. Sometimes three or four lines of code represent days of digging and
  2021. pestering people.  Some routines were written all over from scratch
  2022. five plus times as I discovered more bugs in BIOSes, DOS variants and
  2023. Windows.  I like writing free software, but since my company is in
  2024. such rough financial shape, I am going to make the program partly free
  2025. and partly shareware.
  2026.  
  2027. You are free to use NEED.COM, NEED.TXT, SNIFF.COM and AVOID.COM, and
  2028. to copy them freely for any purpose but military.  If you want the
  2029. MASM source code, or the latest version of NEED/AVOID/SNIFF you must
  2030. register.
  2031.  
  2032. The registration price includes shipping and handling anywhere in the
  2033. world.  Please send $15 US or $15 CDN cheque, money order or VISA,
  2034. (sorry, we don't have authorization to handle any other kinds of
  2035. credit card) to:
  2036.  
  2037.  
  2038. NEED/AVOID Registrations
  2039.  
  2040.  
  2041.  
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053. Canadian Mind Products
  2054. #168 - 1020 Mainland Street
  2055. Vancouver, BC  CANADA
  2056. V6B 2T4
  2057.  
  2058. (604) 684-6529 voice.
  2059.      We can take VISA by phone.  Sorry no other credit cards.
  2060. (604) 684-5541 fax
  2061.  
  2062. You can also contact me on BIX as id ROEDY.
  2063.  
  2064. Please mark any bug reports "attention Roedy Green".
  2065.  
  2066. -30-
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.  
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.